home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Die Speccy' 97
/
Die Speccy' 97.iso
/
amiga_system
/
the_aminet
/
dev
/
c
/
cwebbin_p13.lha
/
cwebbin-p13
/
wmerge.cxx
< prev
Wrap
C/C++ Source or Header
|
1995-09-19
|
19KB
|
942 lines
#define buf_size 1024 \
#define max_include_depth 10 \
#define max_file_name_length 255
#define cur_file file[include_depth]
#define cur_file_name file_name[include_depth]
#define cur_line line[include_depth]
#define web_file file[0]
#define web_file_name file_name[0] \
#define lines_dont_match (change_limit-change_buffer!=limit-buffer|| \
strncmp(buffer,change_buffer,(size_t) (limit-buffer) ) ) \
#define too_long() {include_depth--; \
err_print("! Include file name too long") ;goto restart;} \
#define spotless 0
#define harmless_message 1
#define error_message 2
#define fatal_message 3
#define mark_harmless {if(history==spotless) history= harmless_message;}
#define mark_error history= error_message \
#define fatal(s,t) { \
fprintf(stderr,s) ;err_print(t) ; \
history= fatal_message;exit(wrap_up() ) ; \
} \
#define RETURN_OK 0
#define RETURN_WARN 5
#define RETURN_ERROR 10
#define RETURN_FAIL 20 \
#define show_banner flags['b']
#define show_happiness flags['h'] \
#define update_terminal fflush(stderr) \
#define max_path_length (BUFSIZ-2) \
#define alloc_object(object,size,type) \
if(!(object= (type*) malloc((size) *sizeof(type) ) ) ) \
fatal("","! Memory allocation failure") ;
#define free_object(object) \
if(object) { \
free(object) ; \
object= NULL; \
} \
/*1:*/
#line 13 "examples/wmerge.w"
#line 4 "wmerg-p13.ch"
#include <string.h>
#include <signal.h>
#include <stdio.h>
#ifdef SEPARATORS
char separators[]= SEPARATORS;
#else
char separators[]= "://";
#endif
#define PATH_SEPARATOR separators[0]
#define DIR_SEPARATOR separators[1]
#define DEVICE_SEPARATOR separators[2]
#line 15 "examples/wmerge.w"
#include <stdlib.h>
#include <ctype.h>
/*2:*/
#line 35 "examples/wmerge.w"
typedef short boolean;
typedef unsigned char eight_bits;
typedef char ASCII;
#line 56 "wmerg-p13.ch"
/*:2*//*5:*/
#line 68 "examples/wmerge.w"
#line 66 "wmerg-p13.ch"
ASCII*buffer;
ASCII*buffer_end;
#line 71 "examples/wmerge.w"
ASCII*limit;
ASCII*loc;
/*:5*//*7:*/
#line 134 "examples/wmerge.w"
int include_depth;
#line 93 "wmerg-p13.ch"
FILE**file;
FILE*change_file;
char**file_name;
char*change_file_name;
char*alt_web_file_name;
int*line;
#line 143 "examples/wmerge.w"
int change_line;
int change_depth;
boolean input_has_ended;
boolean changing;
boolean web_file_open= 0;
/*:7*//*8:*/
#line 160 "examples/wmerge.w"
#line 112 "wmerg-p13.ch"
char*change_buffer;
#line 162 "examples/wmerge.w"
char*change_limit;
/*:8*//*23:*/
#line 478 "examples/wmerge.w"
int history= spotless;
/*:23*//*30:*/
#line 575 "examples/wmerge.w"
int argc;
char**argv;
#line 344 "wmerg-p13.ch"
char*check_file_name;
char*out_file_name;
boolean*flags;
#line 580 "examples/wmerge.w"
/*:30*//*40:*/
#line 691 "examples/wmerge.w"
#line 391 "wmerg-p13.ch"
FILE*check_file;
FILE*out_file;
#line 693 "examples/wmerge.w"
/*:40*//*43:*/
#line 419 "wmerg-p13.ch"
const char Version[]= "$VER: WMerge 3.4 [p13] ("__DATE__", "__TIME__")\n";
/*:43*//*47:*/
#line 480 "wmerg-p13.ch"
char*include_path;
char*p,*path_prefix,*next_path_prefix;
/*:47*//*49:*/
#line 517 "wmerg-p13.ch"
int i;
/*:49*/
#line 17 "examples/wmerge.w"
/*4:*/
#line 51 "examples/wmerge.w"
/*:4*//*24:*/
#line 490 "examples/wmerge.w"
#line 257 "wmerg-p13.ch"
void err_print(char*);
#line 492 "examples/wmerge.w"
/*:24*//*32:*/
#line 599 "examples/wmerge.w"
#line 361 "wmerg-p13.ch"
void scan_args(void);
#line 601 "examples/wmerge.w"
/*:32*//*44:*/
#line 425 "wmerg-p13.ch"
int get_line(void);
int input_ln(FILE*);
int main(int,char**);
int wrap_up(void);
void check_change(void);
void check_complete(void);
void prime_the_change_buffer(void);
void put_line(void);
void reset_input(void);
/*:44*//*45:*/
#line 438 "wmerg-p13.ch"
static boolean set_path(char*,char*);
/*:45*//*52:*/
#line 543 "wmerg-p13.ch"
void catch_break(int);
/*:52*/
#line 18 "examples/wmerge.w"
/*6:*/
#line 93 "examples/wmerge.w"
#line 74 "wmerg-p13.ch"
int input_ln(
FILE*fp)
#line 96 "examples/wmerge.w"
{
register int c= EOF;
register char*k;
if(feof(fp))return(0);
limit= k= buffer;
while(k<=buffer_end&&(c= getc(fp))!=EOF&&c!='\n')
if((*(k++)= c)!=' ')limit= k;
if(k>buffer_end)
if((c= getc(fp))!=EOF&&c!='\n'){
ungetc(c,fp);loc= buffer;err_print("! Input line too long");
}
if(c==EOF&&limit==buffer)return(0);
return(1);
}
/*:6*//*9:*/
#line 171 "examples/wmerge.w"
#line 119 "wmerg-p13.ch"
void prime_the_change_buffer(void)
#line 174 "examples/wmerge.w"
{
change_limit= change_buffer;
/*10:*/
#line 185 "examples/wmerge.w"
while(1){
change_line++;
if(!input_ln(change_file))return;
if(limit<buffer+2)continue;
if(buffer[0]!='@')continue;
if(isupper(buffer[1]))buffer[1]= tolower(buffer[1]);
if(buffer[1]=='x')break;
if(buffer[1]=='y'||buffer[1]=='z'||buffer[1]=='i'){
loc= buffer+2;
err_print("! Missing @x in change file");
}
}
/*:10*/
#line 176 "examples/wmerge.w"
;
/*11:*/
#line 202 "examples/wmerge.w"
do{
change_line++;
if(!input_ln(change_file)){
err_print("! Change file ended after @x");
return;
}
}while(limit==buffer);
/*:11*/
#line 177 "examples/wmerge.w"
;
/*12:*/
#line 212 "examples/wmerge.w"
{
change_limit= change_buffer-buffer+limit;
#line 125 "wmerg-p13.ch"
strncpy(change_buffer,buffer,(size_t)(limit-buffer+1));
#line 216 "examples/wmerge.w"
}
/*:12*/
#line 178 "examples/wmerge.w"
;
}
/*:9*//*13:*/
#line 230 "examples/wmerge.w"
#line 132 "wmerg-p13.ch"
void check_change(void)
#line 233 "examples/wmerge.w"
{
int n= 0;
if(lines_dont_match)return;
while(1){
changing= 1;change_line++;
if(!input_ln(change_file)){
err_print("! Change file ended before @y");
change_limit= change_buffer;changing= 0;
return;
}
if(limit>buffer+1&&buffer[0]=='@'){
if(isupper(buffer[1]))buffer[1]= tolower(buffer[1]);
/*14:*/
#line 263 "examples/wmerge.w"
if(buffer[1]=='x'||buffer[1]=='z'){
loc= buffer+2;err_print("! Where is the matching @y?");
}
else if(buffer[1]=='y'){
if(n>0){
loc= buffer+2;
fprintf(stderr,"\n! Hmm... %d ",n);
err_print("of the preceding lines failed to match");
}
change_depth= include_depth;
return;
}
/*:14*/
#line 247 "examples/wmerge.w"
;
}
/*12:*/
#line 212 "examples/wmerge.w"
{
change_limit= change_buffer-buffer+limit;
#line 125 "wmerg-p13.ch"
strncpy(change_buffer,buffer,(size_t)(limit-buffer+1));
#line 216 "examples/wmerge.w"
}
/*:12*/
#line 249 "examples/wmerge.w"
;
changing= 0;cur_line++;
while(!input_ln(cur_file)){
if(include_depth==0){
err_print("! CWEB file ended during a change");
input_has_ended= 1;return;
}
include_depth--;cur_line++;
}
if(lines_dont_match)n++;
}
}
/*:13*//*15:*/
#line 282 "examples/wmerge.w"
#line 139 "wmerg-p13.ch"
void reset_input(void)
#line 285 "examples/wmerge.w"
{
limit= buffer;loc= buffer+1;buffer[0]= ' ';
#line 146 "wmerg-p13.ch"
include_depth= 0;cur_line= 0;change_line= 0;
/*16:*/
#line 297 "examples/wmerge.w"
if((web_file= fopen(web_file_name,"r"))==NULL){
strcpy(web_file_name,alt_web_file_name);
if((web_file= fopen(web_file_name,"r"))==NULL)
fatal("! Cannot open input file ",web_file_name);
}
web_file_open= 1;
if((change_file= fopen(change_file_name,"r"))==NULL)
fatal("! Cannot open change file ",change_file_name);
/*:16*/
#line 147 "wmerg-p13.ch"
;
#line 289 "examples/wmerge.w"
change_depth= include_depth;
changing= 1;prime_the_change_buffer();changing= !changing;
limit= buffer;loc= buffer+1;buffer[0]= ' ';input_has_ended= 0;
}
/*:15*//*17:*/
#line 315 "examples/wmerge.w"
get_line()
{
restart:
if(changing&&include_depth==change_depth)
/*21:*/
#line 423 "examples/wmerge.w"
{
change_line++;
if(!input_ln(change_file)){
err_print("! Change file ended without @z");
buffer[0]= '@';buffer[1]= 'z';limit= buffer+2;
}
if(limit>buffer){
*limit= ' ';
if(buffer[0]=='@'){
if(isupper(buffer[1]))buffer[1]= tolower(buffer[1]);
if(buffer[1]=='x'||buffer[1]=='y'){
loc= buffer+2;
err_print("! Where is the matching @z?");
}
else if(buffer[1]=='z'){
prime_the_change_buffer();changing= !changing;
}
}
}
}
/*:21*/
#line 320 "examples/wmerge.w"
;
if(!changing||include_depth>change_depth){
/*20:*/
#line 407 "examples/wmerge.w"
{
cur_line++;
while(!input_ln(cur_file)){
if(include_depth==0){input_has_ended= 1;break;}
else{
fclose(cur_file);include_depth--;
if(changing&&include_depth==change_depth)break;
cur_line++;
}
}
if(!changing&&!input_has_ended)
if(limit-buffer==change_limit-change_buffer)
if(buffer[0]==change_buffer[0])
if(change_limit>change_buffer)check_change();
}
/*:20*/
#line 322 "examples/wmerge.w"
;
if(changing&&include_depth==change_depth)goto restart;
}
loc= buffer;*limit= ' ';
if(*buffer=='@'&&(*(buffer+1)=='i'||*(buffer+1)=='I')){
loc= buffer+2;
while(loc<=limit&&(*loc==' '||*loc=='\t'||*loc=='"'))loc++;
if(loc>=limit){
err_print("! Include file name not given");
goto restart;
}
if(include_depth>=max_include_depth-1){
err_print("! Too many nested includes");
goto restart;
}
include_depth++;
/*19:*/
#line 366 "examples/wmerge.w"
{
#line 182 "wmerg-p13.ch"
static char*temp_file_name;
#line 368 "examples/wmerge.w"
char*cur_file_name_end= cur_file_name+max_file_name_length-1;
char*k= cur_file_name,*kk;
int l;
#line 188 "wmerg-p13.ch"
alloc_object(temp_file_name,max_file_name_length,char);
while(*loc!=' '&&*loc!='\t'&&*loc!='"'&&k<=cur_file_name_end)*k++= *loc++;
#line 373 "examples/wmerge.w"
if(k>cur_file_name_end)too_long();
*k= '\0';
if((cur_file= fopen(cur_file_name,"r"))!=NULL){
cur_line= 0;
goto restart;
}
#line 218 "wmerg-p13.ch"
if(0==set_path(include_path,getenv("CWEBINPUTS"))){
include_depth--;goto restart;
}
path_prefix= include_path;
while(path_prefix){
for(kk= temp_file_name,p= path_prefix,l= 0;
p&&*p&&*p!=PATH_SEPARATOR;
*kk++= *p++,l++);
if(path_prefix&&*path_prefix&&*path_prefix!=PATH_SEPARATOR&&
*--p!=DEVICE_SEPARATOR&&*p!=DIR_SEPARATOR){
*kk++= DIR_SEPARATOR;l++;
}
if(k+l+2>=cur_file_name_end)too_long();
strcpy(kk,cur_file_name);
if((cur_file= fopen(temp_file_name,"r"))!=NULL){
cur_line= 0;goto restart;
}
if((next_path_prefix= strchr(path_prefix,PATH_SEPARATOR))!=NULL)
path_prefix= next_path_prefix+1;
else break;
}
#line 404 "examples/wmerge.w"
include_depth--;err_print("! Cannot open include file");goto restart;
}
/*:19*/
#line 340 "examples/wmerge.w"
;
}
return(!input_has_ended);
}
#line 153 "wmerg-p13.ch"
void put_line(void)
#line 346 "examples/wmerge.w"
{
char*ptr= buffer;
while(ptr<limit)putc(*ptr++,out_file);
putc('\n',out_file);
}
#line 168 "wmerg-p13.ch"
/*:17*//*22:*/
#line 449 "examples/wmerge.w"
#line 245 "wmerg-p13.ch"
void check_complete(void){
#line 452 "examples/wmerge.w"
if(change_limit!=change_buffer){
#line 251 "wmerg-p13.ch"
strncpy(buffer,change_buffer,(size_t)(change_limit-change_buffer+1));
#line 454 "examples/wmerge.w"
limit= buffer+(int)(change_limit-change_buffer);
changing= 1;change_depth= include_depth;loc= buffer;
err_print("! Change file entry did not match");
}
}
/*:22*//*25:*/
#line 494 "examples/wmerge.w"
#line 265 "wmerg-p13.ch"
void err_print(char*s)
#line 498 "examples/wmerge.w"
{
char*k,*l;
fprintf(stderr,*s=='!'?"\n%s":"%s",s);
if(web_file_open)/*26:*/
#line 514 "examples/wmerge.w"
{if(changing&&include_depth==change_depth)
printf(". (l. %d of change file)\n",change_line);
else if(include_depth==0)fprintf(stderr,". (l. %d)\n",cur_line);
else fprintf(stderr,". (l. %d of include file %s)\n",cur_line,cur_file_name);
l= (loc>=limit?limit:loc);
if(l>buffer){
for(k= buffer;k<l;k++)
if(*k=='\t')putc(' ',stderr);
else putc(*k,stderr);
putchar('\n');
for(k= buffer;k<l;k++)putc(' ',stderr);
}
for(k= l;k<limit;k++)putc(*k,stderr);
putc('\n',stderr);
}
/*:26*/
#line 501 "examples/wmerge.w"
;
update_terminal;mark_error;
}
/*:25*//*28:*/
#line 546 "examples/wmerge.w"
#line 297 "wmerg-p13.ch"
int wrap_up(void){
#line 303 "wmerg-p13.ch"
if(history>spotless)putchar('\n');
/*56:*/
#line 601 "wmerg-p13.ch"
if(out_file)
fclose(out_file);
if(check_file)
fclose(check_file);
if(check_file_name)
remove(check_file_name);
/*:56*/
#line 304 "wmerg-p13.ch"
/*29:*/
#line 553 "examples/wmerge.w"
switch(history){
case spotless:if(show_happiness)fprintf(stderr,"(No errors were found.)\n");break;
case harmless_message:
fprintf(stderr,"(Did you see the warning message above?)\n");break;
case error_message:
fprintf(stderr,"(Pardon me, but I think I spotted something wrong.)\n");break;
case fatal_message:fprintf(stderr,"(That was a fatal error, my friend.)\n");
}
/*:29*/
#line 305 "wmerg-p13.ch"
;
#line 312 "wmerg-p13.ch"
#ifdef __TURBOC__
{
int return_val;
switch(history){
case harmless_message:return_val= RETURN_WARN;break;
case error_message:return_val= RETURN_ERROR;break;
case fatal_message:return_val= RETURN_FAIL;break;
default:return_val= RETURN_OK;
}
return(return_val);
}
#else
switch(history){
case harmless_message:return(RETURN_WARN);break;
case error_message:return(RETURN_ERROR);break;
case fatal_message:return(RETURN_FAIL);break;
default:return(RETURN_OK);
}
#endif
#line 551 "examples/wmerge.w"
}
/*:28*//*33:*/
#line 603 "examples/wmerge.w"
#line 368 "wmerg-p13.ch"
void scan_args(void)
#line 606 "examples/wmerge.w"
{
char*dot_pos;
register char*s;
boolean found_web= 0,found_change= 0,found_out= 0;
boolean flag_change;
while(--argc>0){
if(**(++argv)=='-'||**argv=='+')/*37:*/
#line 673 "examples/wmerge.w"
{
if(**argv=='-')flag_change= 0;
else flag_change= 1;
for(dot_pos= *argv+1;*dot_pos>'\0';dot_pos++)
flags[*dot_pos]= flag_change;
}
/*:37*/
#line 614 "examples/wmerge.w"
else{
s= *argv;dot_pos= NULL;
while(*s){
if(*s=='.')dot_pos= s++;
#line 374 "wmerg-p13.ch"
else if(*s==DIR_SEPARATOR||*s==DEVICE_SEPARATOR||*s=='/')
dot_pos= NULL,++s;
#line 620 "examples/wmerge.w"
else s++;
}
if(!found_web)/*34:*/
#line 639 "examples/wmerge.w"
{
if(s-*argv>max_file_name_length-5)
/*39:*/
#line 686 "examples/wmerge.w"
fatal("! Filename too long\n",*argv);
/*:39*/
#line 642 "examples/wmerge.w"
;
if(dot_pos==NULL)
sprintf(web_file_name,"%s.w",*argv);
else{
strcpy(web_file_name,*argv);
*dot_pos= 0;
}
sprintf(alt_web_file_name,"%s.web",*argv);
*out_file_name= '\0';
found_web= 1;
}
/*:34*/
#line 622 "examples/wmerge.w"
else if(!found_change)/*35:*/
#line 654 "examples/wmerge.w"
{
if(s-*argv>max_file_name_length-4)
/*39:*/
#line 686 "examples/wmerge.w"
fatal("! Filename too long\n",*argv);
/*:39*/
#line 657 "examples/wmerge.w"
;
if(dot_pos==NULL)
sprintf(change_file_name,"%s.ch",*argv);
else strcpy(change_file_name,*argv);
found_change= 1;
}
/*:35*/
#line 623 "examples/wmerge.w"
else if(!found_out)/*36:*/
#line 664 "examples/wmerge.w"
{
if(s-*argv>max_file_name_length-5)
/*39:*/
#line 686 "examples/wmerge.w"
fatal("! Filename too long\n",*argv);
/*:39*/
#line 667 "examples/wmerge.w"
;
if(dot_pos==NULL)sprintf(out_file_name,"%s.out",*argv);
else strcpy(out_file_name,*argv);
found_out= 1;
}
/*:36*/
#line 624 "examples/wmerge.w"
else/*38:*/
#line 681 "examples/wmerge.w"
{
fatal("! Usage: wmerge webfile[.w] [changefile[.ch] [outfile[.out]]]\n","")
}
/*:38*/
#line 625 "examples/wmerge.w"
;
}
}
if(!found_web)/*38:*/
#line 681 "examples/wmerge.w"
{
fatal("! Usage: wmerge webfile[.w] [changefile[.ch] [outfile[.out]]]\n","")
}
/*:38*/
#line 628 "examples/wmerge.w"
;
#line 381 "wmerg-p13.ch"
#ifdef _DEV_NULL
if(!found_change)strcpy(change_file_name,_DEV_NULL);
#else
if(!found_change)strcpy(change_file_name,"/dev/null");
#endif
#line 630 "examples/wmerge.w"
}
/*:33*/
#line 19 "examples/wmerge.w"
#line 23 "wmerg-p13.ch"
int main(int ac,char**av)
#line 22 "examples/wmerge.w"
{
argc= ac;argv= av;
#line 29 "wmerg-p13.ch"
/*50:*/
#line 528 "wmerg-p13.ch"
if(signal(SIGINT,&catch_break)==SIG_ERR)
exit(1);
/*:50*/
#line 29 "wmerg-p13.ch"
/*48:*/
#line 500 "wmerg-p13.ch"
alloc_object(buffer,buf_size,ASCII);
buffer_end= buffer+buf_size-2;
alloc_object(file,max_include_depth,FILE*);
alloc_object(file_name,max_include_depth,char*);
for(i= 0;i<max_include_depth;i++)
alloc_object(file_name[i],max_file_name_length,char);
alloc_object(change_file_name,max_file_name_length,char);
alloc_object(alt_web_file_name,max_file_name_length,char);
alloc_object(line,max_include_depth,int);
alloc_object(change_buffer,buf_size,char);
alloc_object(check_file_name,max_file_name_length,char);
alloc_object(out_file_name,max_file_name_length,char);
alloc_object(flags,256,boolean);
alloc_object(include_path,max_path_length+2,char);
strcpy(include_path,"");
/*:48*/
#line 30 "wmerg-p13.ch"
;
/*31:*/
#line 583 "examples/wmerge.w"
show_banner= show_happiness= 1;
/*:31*/
#line 31 "wmerg-p13.ch"
;
#line 25 "examples/wmerge.w"
/*41:*/
#line 694 "examples/wmerge.w"
scan_args();
#line 400 "wmerg-p13.ch"
strcpy(check_file_name,out_file_name);
if(check_file_name[0]!='\0'){
char*dot_pos= strrchr(check_file_name,'.');
if(dot_pos==NULL)strcat(check_file_name,".mtp");
else strcpy(dot_pos,".mtp");
}
if(out_file_name[0]=='\0')out_file= stdout;
else if((out_file= fopen(check_file_name,"w"))==NULL)
fatal("! Cannot open output file ",check_file_name);
#line 699 "examples/wmerge.w"
/*:41*/
#line 25 "examples/wmerge.w"
;
reset_input();
while(get_line())
put_line();
fflush(out_file);
check_complete();
fflush(out_file);
#line 37 "wmerg-p13.ch"
if(out_file!=stdout){
fclose(out_file);out_file= NULL;
/*53:*/
#line 554 "wmerg-p13.ch"
if((out_file= fopen(out_file_name,"r"))!=NULL){
char*x,*y;
int x_size,y_size,comparison;
if((check_file= fopen(check_file_name,"r"))==NULL)
fatal("! Cannot open output file",check_file_name);
alloc_object(x,BUFSIZ,char);
alloc_object(y,BUFSIZ,char);
/*54:*/
#line 582 "wmerg-p13.ch"
do{
x_size= fread(x,1,BUFSIZ,out_file);
y_size= fread(y,1,BUFSIZ,check_file);
comparison= (x_size==y_size);
if(comparison)comparison= !memcmp(x,y,x_size);
}while(comparison&&!feof(out_file)&&!feof(check_file));
/*:54*/
#line 565 "wmerg-p13.ch"
fclose(out_file);out_file= NULL;
fclose(check_file);check_file= NULL;
/*55:*/
#line 593 "wmerg-p13.ch"
if(comparison)
remove(check_file_name);
else{
remove(out_file_name);
rename(check_file_name,out_file_name);
}
/*:55*/
#line 570 "wmerg-p13.ch"
free_object(y);
free_object(x);
}
else
rename(check_file_name,out_file_name);
check_file_name= NULL;
/*:53*/
#line 39 "wmerg-p13.ch"
}
return wrap_up();
#line 33 "examples/wmerge.w"
}
/*:1*//*46:*/
#line 450 "wmerg-p13.ch"
static boolean set_path(char*include_path,char*environment)
{
char*string;
alloc_object(string,max_path_length+2,char);
#ifdef CWEBINPUTS
strcpy(include_path,CWEBINPUTS);
#endif
if(environment){
if(strlen(environment)+strlen(include_path)>=max_path_length){
err_print("! Include path too long");
free_object(string);return(0);
}
else{
sprintf(string,"%s%c%s",environment,PATH_SEPARATOR,include_path);
strcpy(include_path,string);
}
}
free_object(string);return(1);
}
/*:46*//*51:*/
#line 536 "wmerg-p13.ch"
void catch_break(int dummy)
{
history= fatal_message;
exit(wrap_up());
}
/*:51*/